//声明 reducer 函数
let countReducer = (init=50, action) => {
  //switch 判断
  switch(action.type){
    case 'incre':
      return init + action.payload; //返回值会更新内部存储的状态值
    case 'decre':
      return init - action.payload
      //这一步不能省略, 因为第一次执行时, 会调用该函数, 得到状态的初始值
    default: 
      return init;
  }
}
//暴露
export default countReducer;


// 声明函数 返回 action 对象
export function increAction(payload){
  return {
    type: 'incre',
    payload: payload
  }
}

//
export function decreAction(payload){
  return {
    type: 'decre',
    payload
  }
}

//封装一个函数 用来返回 action 函数
export function asyncIncreAction(payload){
  return (dispatch) => {
    //异步任务
    setTimeout(() => {
      dispatch(increAction(payload));
    }, 1000);
  }
}